package com.leozhang.app;

// JavaBeans 是 Java 平台中用于封装多个对象的组件设计模式，通常用于构建可重用的类。JavaBean 是一种标准的 Java 类，它具有以下特征：
// 1. 属性私有化（Private Fields）：JavaBean 中的属性通常是私有的，通过 getter 和 setter 方法访问。
// 2. 公共的无参构造方法（Public No-Argument Constructor）：JavaBean 必须有一个公共的无参构造方法。这是为了便于反射机制来实例化对象。
// 3. 实现可序列化（Serializable）：JavaBean 应实现 java.io.Serializable 接口，以便能够被持久化或通过网络传输。
// 4. 标准的 getter 和 setter 方法：JavaBean 必须提供 getter 和 setter 方法，以便外部代码能够访问和修改 JavaBean 的属性。
//  * getter 方法用于获取属性值，命名格式为 getPropertyName()（对于布尔类型属性也可以使用 isPropertyName()）。
//  * setter 方法用于设置属性值，命名格式为 setPropertyName(T value)，其中 T 是属性的类型。

// 使用场景
// 1. 可重用组件：JavaBean 可以作为可重用的组件用于各种开发场景中，比如 Spring 中的实体类、Servlet 中的数据传输对象等。
// 2. 数据传输对象（DTO）：JavaBean 常用于表示从客户端到服务器的请求数据或从服务器到客户端的响应数据。
// 3. 表单处理：在 Java Web 开发中，JavaBean 常用于表示 HTML 表单数据，并与 JSP 和 Servlet 集成。
// 4. 属性绑定：JavaBean 经常用于 GUI 编程中，将用户界面的组件属性与后台数据对象进行绑定。
// JavaBeans 作为一种标准化的组件模式，大大提升了 Java 组件的可重用性和一致性。
public class User implements java.io.Serializable {

//    private static final long serialVersionUID = 1L; // 序列化版本号

    private String name;
    private int age;

    private String email;

    // Constructor without parameters
    public User() { }

    // Getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // 重写 toString() 方法用于显示对象信息
    @Override
    public String toString() {
        return "User{" + "name='" + name + '\'' + ", age=" + age + '}';
//        return "User{name='" + name + "', age=" + age + "}";
    }
}
